home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
CC_C
/
1116.ZIP
/
TOOLKIT.ARC
/
GETINT.H
< prev
next >
Wrap
Text File
|
1979-12-31
|
8KB
|
208 lines
/* GETINT.H written by Wayne Perason
This Small-c:PC header file makes input of numeric values
possible via the keyboard.
Valid function calls:
x = getint("%d",x); decimal number input
x = getint("%h",x); hexadecimal number input
x = getint("%o",x); octal number input
x = getint("%b",x); binary number input
x = getval(row,column,x); get ASCII value at
a cursor location
specified by row,col.
*/
getint(gi_str,n_gi)
char gi_str[]; int *n_gi;
{
int gi_s;
char gi_str0, gi_sn;
gi_str0 = gi_str[0]; gi_sn = gi_str[1];
if((gi_str0 =='%')&(gi_sn =='d'))
{
int gi_ld, d_p100, d_p10, d_p1;
char d_str0, d_str1, d_str2;
d_str0 = getchar(d_str0);
if(d_str0 != 13) gi_ld = 1; else gi_s = gi_ld = 0;
if(d_str0 != 13)
{
d_str1 = getchar(d_str1);
if(d_str1 != 13)
{
gi_ld = 2;
d_str2 = getchar(d_str2);
if(d_str2 != 13) gi_ld = 3;
}
}
if(gi_ld == 3)
{
putchar(13);
if(((d_str0 < 48)|(d_str0 > 57))&(d_str0 != 13))
{ n_gi = 0; return; }
if(((d_str1 < 48)|(d_str1 > 57))&(d_str1 != 13))
{ n_gi = 0; return; }
if(((d_str2 < 48)|(d_str2 > 57))&(d_str2 != 13))
{ n_gi = 0; return; }
d_p100 = d_str0 - 48; d_p100 = d_p100 * 100;
d_p10 = d_str1 - 48; d_p10 = d_p10 * 10;
d_p1 = d_str2 - 48;
gi_s = d_p100 + d_p10 + d_p1;
}
if(gi_ld == 2)
{
if(((d_str0 < 48)|(d_str0 > 57))&(d_str0 != 13))
{ n_gi = 0; return; }
if(((d_str1 < 48)|(d_str1 > 57))&(d_str1 != 13))
{ n_gi = 0; return; }
d_p10 = d_str0 - 48; d_p10 = d_p10 * 10;
d_p1 = d_str1 - 48; gi_s = d_p10 + d_p1;
}
if(gi_ld == 1)
{
if(((d_str0 < 48)|(d_str0 > 57))&(d_str0 != 13))
{ n_gi = 0; return; }
gi_s = d_str0 - 48;
}
}
if((gi_str0 =='%')&(gi_sn =='o'))
{
int gi_lo, o_p100, o_p10, o_p1;
char o_str0, o_str1, o_str2;
o_str0 = getchar(o_str0);
if(o_str0 != 13) gi_lo = 1; else gi_lo = gi_s = 0;
if(o_str0 != 13)
{
o_str1 = getchar(o_str1);
if(o_str1 != 13)
{
gi_lo = 2;
o_str2 = getchar(o_str2);
if(o_str2 != 13) gi_lo = 3;
}
}
if(gi_lo == 3)
{
putchar(13);
if(((o_str0 < 48)|(o_str0 > 55))&(o_str0 != 13))
{ n_gi = 0; return; }
if(((o_str1 < 48)|(o_str1 > 55))&(o_str1 != 13))
{ n_gi = 0; return; }
if(((o_str2 < 48)|(o_str2 > 55))&(o_str2 != 13))
{ n_gi = 0; return; }
o_p100 = o_str0 - 48; o_p100 = o_p100 * 64;
o_p10 = o_str1 - 48; o_p10 = o_p10 * 8;
o_p1 = o_str2 - 48;
gi_s = o_p100 + o_p10 + o_p1;
}
if(gi_lo == 2)
{
if(((o_str0 < 48)|(o_str0 > 55))&(o_str0 != 13))
{ n_gi = 0; return; }
if(((o_str1 < 48)|(o_str1 > 55))&(o_str1 != 13))
{ n_gi = 0; return; }
o_p10 = o_str0 - 48; o_p10 = o_p10 * 8;
o_p1 = o_str1 - 48; gi_s = o_p10 + o_p1;
}
if(gi_lo == 1)
{
if(((o_str0 < 48)|(o_str0 > 55))&(o_str0 != 13))
{ n_gi = 0; return; }
gi_s = o_str0 - 48;
}
}
if((gi_str0 =='%')&(gi_sn =='h'))
{
int gi_lh, h_p16, h_p1;
char h_str0, h_str1;
h_str0 = getchar(h_str0);
if(h_str0 != 13) gi_lh = 1; else gi_s = gi_lh = 0;
if(h_str0 != 13)
{
h_str1 = getchar(h_str1);
if(h_str1 != 13) gi_lh = 2;
}
if(gi_lh == 2)
{
putchar(13); h_p16 = h_str0;
if(h_str0 > 96) h_str0 = h_str0 - 32; /* toupper */
if(h_str1 > 96) h_str1 = h_str1 - 32; /* toupper */
if(((h_str0 < 48)|(h_str0 > 70))&(h_str0 != 13))
{ n_gi = 0; return; }
if(((h_str1 < 48)|(h_str1 > 70))&(h_str1 != 13))
{ n_gi = 0; return; }
if(h_p16 > 57) h_p16 = h_p16 - 55; else h_p16 = h_p16 - 48;
h_p1 = h_str1;
if(h_p1 > 57) h_p1 = h_p1 - 55; else h_p1 = h_p1 - 48;
gi_s = h_p16 * 16 + h_p1;
}
if(gi_lh == 1)
{
if(h_str0 > 96) h_str0 = h_str0 - 32; /* toupper */
if(((h_str0 < 48)|(h_str0 > 70))&(h_str0 != 13))
{ n_gi = 0; return; }
h_p1 = h_str0;
if(h_p1 > 57) gi_s = h_p1 - 55; else gi_s = h_p1 - 48;
}
}
if((gi_str0 =='%')&(gi_sn =='b'))
{
int _b1, _b2, _b3, _b4, _b5, _b6, _b7, _b8, gi_lb, _go;
_b1 = getchar(_b1);
if(_b1 == 13) { n_gi = 0; return; }
if(_b1 != 13)
{
_b2 = getchar(_b2);
_b3 = getchar(_b3);
_b4 = getchar(_b4);
_b5 = getchar(_b5);
_b6 = getchar(_b6);
_b7 = getchar(_b7);
_b8 = getchar(_b8);
}
putchar(13);
if(((_b1 < 48)|(_b1 > 49))&(_b1 != 13))
{ n_gi = 0; return; }
if(((_b2 < 48)|(_b2 > 49))&(_b2 != 13))
{ n_gi = 0; return; }
if(((_b3 < 48)|(_b3 > 49))&(_b3 != 13))
{ n_gi = 0; return; }
if(((_b4 < 48)|(_b4 > 49))&(_b4 != 13))
{ n_gi = 0; return; }
if(((_b5 < 48)|(_b5 > 49))&(_b5 != 13))
{ n_gi = 0; return; }
if(((_b6 < 48)|(_b6 > 49))&(_b6 != 13))
{ n_gi = 0; return; }
if(((_b7 < 48)|(_b7 > 49))&(_b7 != 13))
{ n_gi = 0; return; }
if(((_b8 < 48)|(_b8 > 49))&(_b8 != 13))
{ n_gi = 0; return; }
_b1 = (_b1 - 48) * 128;
_b2 = (_b2 - 48) * 64;
_b3 = (_b3 - 48) * 32;
_b4 = (_b4 - 48) * 16;
_b5 = (_b5 - 48) * 8;
_b6 = (_b6 - 48) * 4;
_b7 = (_b7 - 48) * 2;
_b8 = _b8 - 48;
gi_s = _b1 +_b2 +_b3 +_b4 +_b5 +_b6 +_b7 +_b8;
}
n_gi = gi_s;
}
getval(_gvrow,gv_col,_gvx)
int _gv_row, _gv_col, *_gvx;
{
int _ah_, _gvx10;
int10(2,0,0,0,0,0,_gv_row,_gv_col);
_ah_ = 8;
int10(_ah_,_gvx10,0,0,0,0,0,0);
_gvx = _gvx10;
}